package com.jboost.common.file;

import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.jboost.common.constant.CommonConstant;
import com.jboost.common.file.constant.VideoBitrateEnum;
import com.jboost.common.util.qiniu.QiniuUtil;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.lang.StringUtils;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

import static com.jboost.common.file.constant.JboostFileConstant.*;


/**
 * @Description: jboost_file
 * @Author: cxn
 * @Date:   2021-05-11
 * @Version: V1.0
 */
@Data
public class JboostFileVo {

    public static String WEB_HTTP = "";
    /** ID */
    private String id;
    /** 创建人 */
    private String createBy;
    /** 创建时间 */
    private java.util.Date createTime;
    /** 更新人 */
    private String updateBy;
    /** 更新时间 */
    private java.util.Date updateTime;
                 
	/**delFlag*/
    private Integer delFlag;
        
	/**version*/
    private Integer version;
                                            
	/**文件别名（前端显示用），可以重复*/
    private String aliasName;
        
	/**文件扩展名、格式*/
    private String fileExt;
        
	/**文件编码*/
    private String fileCode;

    /**文件具体内容（标识）：储存平台、具体内容，{platform:’aliyun’,content:’/test.jpg’}
域名前缀：可能有多个文件源，一个项目一个文件源，项目配置项管理*/
    private String fileStore;
    private JSONObject fileStoreJson;


	/**文件大小，单位 KB*/
    private Double fileSize;
        
	/**唯一标识*/
    private String fileKey;

    @ApiModelProperty(value = "视频、音频时长，单位秒")
    private Integer duration;

    private String bitrateList;

    @ApiModelProperty(value = "处理状态：processing-处理中；success-处理成功；fail-处理失败")
    private String handleStatus;

    public List<VideoBitrateVo> parseBitrateList() {
        if(StringUtils.isEmpty(bitrateList)){
            return null;
        }
        return Arrays.stream(bitrateList.split(CommonConstant.SPLIT_SYMBOL)).map(bit->{
            VideoBitrateVo vo = new VideoBitrateVo();
            vo.setName(VideoBitrateEnum.getDescByCode(bit));
            vo.setCode(bit);
            vo.setViewUrl(QiniuUtil.getFullUrl(this.fileKey+"-"+bit+".m3u8", null));
            return vo;
        }).collect(Collectors.toList());
    }

    public JSONObject getFileStoreJson(){
        JSONObject fileJson = JSON.parseObject(this.fileStore);
        if(CommonConstant.UPLOAD_TYPE_LOCAL.equals(fileJson.getString(FILE_STORE_TYPE_KEY))){
            String savePath = fileJson.getString(FILE_STORE_PATH_KEY);
            if(null != savePath && savePath.indexOf("http") == -1){
                fileJson.put("sourcePath",savePath);
//                补上 http
                savePath = WEB_HTTP+savePath;
                fileJson.put(FILE_STORE_PATH_KEY,savePath);

            }
        }
        return fileJson;
    }
}
